Data represents a significant asset for many entities. Consequently, data loss, whether accidental or caused by malicious activity, can be costly in terms of wasted manpower, loss of goodwill from customers, loss of time and potential legal liability. To ensure proper protection of data for business, legal or other purposes, many entities may desire to protect their data using a variety of techniques, including data storage, redundancy, security, etc. These techniques may, however, conflict with other competing constraints or demands imposed by the state or configuration of computing devices used to process or store this data.
One method for dealing with these tensions is to implement a Redundant Array of Independent Disks (RAID). Generally, RAID systems divide and replicate data across multiple hard disk drives (or other types of storage media), collectively referred to as an array, to increase reliability and in some cases improve throughput of computing devices (known as a host) using these RAID systems for storage. To a host then, a RAID array may appear as one or more monolithic storage areas. When a host desires to communicate (read, write, etc.) with the RAID system the host communicates as if the RAID array were a single disk. The RAID system, in turn, processes these communications to implement a certain RAID level in conjunction with such communications. These RAID levels may be designed to achieve some desired balance between a variety of tradeoffs such as reliability, capacity, speed, etc. For example, RAID (level) 0 distributes data across several disks in a way which gives improved speed and utilizes substantially the full capacity of the disks, but all data on a disk will be lost if the disk fails; RAID (level) 1 uses two (or more) disks which each store the same data, so that data is not lost so long as one disk survives. Total capacity of the array is substantially the capacity of a single disk and RAID (level) 5 combines three or more disks in a way that protects data against loss of any one disk; the storage capacity of the array is reduced by one disk.
Current implementations of RAID may have a variety of problems. These problems may stem from limitations imposed by the architecture of these RAID systems, such as the fact that in many instances all communications with a RAID system must be addressed to a single server which controls and manages the RAID system. Other problems may arise from the configuration or layout of the data on the disks comprising a RAID system. For example, in certain cases a RAID level must be chosen and storage allocated within the RAID system before the RAID system can be utilized. Thus, the initially chosen RAID level must be implemented in conjunction with the data stored on the RAID system, irrespective of whether that level of RAID is desired or needed. In many cases these existing problems may be exacerbated by the need to use custom hardware or software to implement these solutions, raising the costs associated with implementing such a solution.
Additionally, in RAID systems or other storage systems which present storage to a host or other device it may be the case that certain volumes or portions of volumes are accessed more frequently than other volumes or portions of the same, or other, volumes. However, various portions of storage devices on which these volumes are stored may have different access times. For example, disk platters of disk drives may be round and performance with regard to data access may be related to disk circumference: the greater the circumference of the disk platter at a portion of the disk the better the performance at that portion. More particularly, round disks generally have sectors spread across the disk and sectors on the outside of the disk may be accessed more efficiently or faster than sectors located nearer the center of the disk. Conversely, sectors located near the inside of the disk may be slower to access or accessed less efficiently than other sectors located elsewhere on the disk.
In most RAID systems, however, placement of data on the storage devices of the RAID system is substantially fixed. In other words, the logical address of a segment may correspond to a physical location where the data corresponding to that logical address is stored. This may be problematic, as often volumes or portions of volumes which are relatively frequently accessed may be located at areas of a storage device which is relatively lower performance and vice versa. Obviously, from a performance standpoint this situation is undesirable as frequently accessed may take relatively longer to access compared to less frequently accessed data.
Consequently, it is desired to substantially ameliorate these problems.